#
# Ronin Exploits - A Ruby library for Ronin that provides exploitation and
# payload crafting functionality.
#
# Copyright (c) 2007-2013 Hal Brodigan (postmodern.mod3 at gmail.com)
#
# This file is part of Ronin Exploits.
#
# Ronin is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ronin is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ronin.  If not, see <http://www.gnu.org/licenses/>
#

require 'ronin/database/migrations/vuln'
require 'ronin/advisory'
require 'ronin/address'
require 'ronin/open_port'
require 'ronin/url'

module Ronin
  class Vuln

    include Model

    # The primary key of the vulnerability
    property :id, Serial

    # The address that is vulnerable
    belongs_to :address, required: false

    # The open port that hosts a vulnerable service
    belongs_to :open_port, required: false

    # The URL that is vulnerable
    belongs_to :url, required: false

    # The vulnerability advisory 
    belongs_to :advisory, required: false,
                          model: 'Advisories::Advisory'

    # The exploits for the vulnerability advisory
    has 0..n, :exploits, through: :advisory,
                         model: 'Exploits::Exploit'

  end
end
